home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-20 / bb21c.zip / INTERNAL.DOC < prev    next >
Text File  |  1993-02-21  |  29KB  |  476 lines

  1. (*   Copyright 1988, 1989, 1990, 1991, 1992, 1993 by H. Roy Engehausen.      *)
  2. (*   All rights reserved.                                                    *)
  3.  
  4. This file contains documentation of file layouts.  Its intended for for
  5. programmers trying to write servers etc.  If you are just going to run
  6. the BBS, you can skip this!!!
  7.  
  8. When writing a server, try to keep to using IMPORT and EXPORT for
  9. getting messages in and out of the BBS.  This will allow you to contiue
  10. to run even after I change the file formats.
  11.  
  12. General types used elsewhere
  13. ----------------------------
  14.  
  15. CONST
  16.   call_sign_len = 2;
  17.   bb_addr_len   = 10;
  18.   h_addr_len    = 32;
  19.   bid_len       = 12;
  20.   password_len  = 8;
  21.   file_name_len = 80;
  22.   subj_len      = 128;
  23.  
  24. TYPE
  25.  
  26.   bb_addr_str   = STRING[bb_addr_len];
  27.   bb_full_addr  = STRING[call_sign_len + 1 + h_addr_len];
  28.   bid_str       = STRING[bid_len];
  29.   call_sign_str = STRING[call_sign_len];
  30.   file_name_str = STRING[file_name_len];
  31.   h_addr_str    = STRING[h_addr_len];
  32.   password_str  = STRING[password_len];
  33.   subj_str      = STRING[subj_len];
  34.  
  35.  
  36. MSG.BB
  37. ------
  38.  
  39. The file contains either one of two records per message.  The second
  40. record is needed to hold the distribution list.  The first record is garbage
  41. except for the record number.  That number is the version number of the file.
  42. It should be "2"
  43.  
  44. CONST
  45.  
  46.      msg_dist_max = 20;                 (* Max number of distribution list   *)
  47.      msg_path_max_msgs = 254;           (* Max messages per path.  Don't     *)
  48.                                         (* exceed 254.                       *)
  49.      msg_path_max_route = 30;           (* Max routes per path.  Don't exceed*)
  50.                                         (* 254                               *)
  51.  
  52. (*---------------------------------------------------------------------------*)
  53. (* These define bits in msg_d_flag                                           *)
  54. (*---------------------------------------------------------------------------*)
  55.  
  56. CONST
  57.   df_fwd         = $01;         (* Message has been forwarded                *)
  58.   df_fwd_select  = $02;         (* Message has been selected for forward     *)
  59.   df_fwd_process = $04;         (* Forward in process now                    *)
  60.   df_fwd_reject  = $08;         (* Bid was rejected                          *)
  61.   df_fwd_cancel  = $10;         (* Forward was cancelled by operator         *)
  62.   df_fwd_unknown = $20;         (* Unknown route                             *)
  63.   df_fwd_spare1  = $40;         (* Spare                                     *)
  64.   df_fwd_spare2  = $80;         (* Spare                                     *)
  65.  
  66. (*---------------------------------------------------------------------------*)
  67. (* These define bits in msg_flag                                             *)
  68. (*---------------------------------------------------------------------------*)
  69.  
  70. CONST
  71.  
  72.   mf_hold         = $0001;      (* Message is in hold                        *)
  73.   mf_read         = $0002;      (* Message has been read                     *)
  74.   mf_fwd          = $0004;      (* Message has been forwarded                *)
  75.   mf_fwd_select   = $0008;      (* Message has been selected for fwd         *)
  76.   mf_fwd_list     = $0010;      (* Distribution list attached                *)
  77.   mf_old          = $0020;      (* Message is old                            *)
  78.   mf_kill         = $0040;      (* Message has been killed                   *)
  79.   mf_fwd_process  = $0080;      (* Forward in process now                    *)
  80.   mf_review       = $0100;      (* Message for review by SYSOP               *)
  81.   mf_h_receive    = $0200;      (* Hierarchial route received                *)
  82.   mf_attached     = $0400;      (* File attached to message                  *)
  83.   mf_bid_override = $0800;      (* No bid override allowed                   *)
  84.   mf_bid_change   = $1000;      (* Bid has been changed                      *)
  85.   mf_archive      = $2000;      (* Msg has been archived                     *)
  86.   mf_disrout      = $4000;      (* Distribution routing block present        *)
  87.   mf_unknown      = $8000;      (* Routed to ?                               *)
  88.  
  89. (*---------------------------------------------------------------------------*)
  90. (* Types                                                                     *)
  91. (*---------------------------------------------------------------------------*)
  92.  
  93. TYPE
  94.     msg_flag_type = WORD;
  95.  
  96.     (* ----- This is the individual distribution list entries ------------- *)
  97.  
  98.     msg_dist_entry_type = RECORD
  99.               msg_d_flag    : BYTE;         (* Flags for this item          *)
  100.               msg_d_info    : bb_addr_str;  (* Where to forward to          *)
  101.             END;
  102.  
  103.     msg_dist_block_type = RECORD
  104.               msg_d_no      : BYTE;         (* No of items                  *)
  105.               msg_d_array   : ARRAY[1..msg_dist_max] OF msg_dist_entry_type;
  106.             END;
  107.  
  108.     (* ----- This is the file format -------------------------------------- *)
  109.  
  110.  
  111.     msg_block = RECORD
  112.               msg_number  : WORD;           (* This msg number               *)
  113.               msg_type    : CHAR;           (* Type of msg -- list is below  *)
  114.               msg_flag    : msg_flag_type;  (* Flags                         *)
  115.               msg_size    : LONGINT;        (* Message size                  *)
  116.               msg_to      : call_sign_str;  (* To addressee                  *)
  117.               msg_to_at   : bb_addr_str;    (* To mailbox address            *)
  118.               msg_to_h    : h_addr_str;     (* To hierarchial route          *)
  119.               msg_from    : call_sign_str;  (* From                          *)
  120.               msg_from_at : bb_addr_str;    (* From mailbox                  *)
  121.               msg_from_h  : h_addr_str;     (* From hierarchial route        *)
  122.               msg_dt_in   : LONGINT;        (* Message's date time at here   *)
  123.               msg_dt_orig : LONGINT;        (* Message's date time at origin *)
  124.               msg_no_orig : WORD;           (* Message number at origin      *)
  125.               msg_tread   : BYTE;           (* Times read (except sysops)    *)
  126.               msg_bid     : bid_str;        (* Message bid                   *)
  127.               msg_r_call  : call_sign_str;  (* Call sign of reject station   *)
  128.               msg_reason  : BYTE;           (* Reason for hold/review        *)
  129.               msg_subj    : subj_str;       (* Subject                       *)
  130.             END;
  131.  
  132.  
  133. USER.BB
  134. -------
  135.  
  136. The file contains one record per user.  The first record is garbage
  137. except for the first word.  That number is the version number of the
  138. file.  It should be "2"
  139.  
  140. (*---------------------------------------------------------------------------*)
  141. (* These define bits in user_flag                                            *)
  142. (*---------------------------------------------------------------------------*)
  143.  
  144. CONST
  145.  
  146.   user_f_trans     = $0001;     (* User is transparent                       *)
  147.   user_f_bbs       = $0002;     (* User is a BBS                             *)
  148.   user_f_abbs      = $0004;     (* User is an advanced BBS                   *)
  149.   user_f_sysop     = $0008;     (* User can be a remote sysop                *)
  150.   user_f_adrchg    = $0010;     (* User has updated his home BBS             *)
  151.   user_f_exclude   = $0020;     (* User is excluded                          *)
  152.   user_f_delete    = $0040;     (* User record is empty                      *)
  153.   user_f_local     = $0080;     (* User is a local                           *)
  154.   user_f_restrict  = $0100;     (* User is restricted                        *)
  155.   user_f_reg_modem = $0200;     (* User is registering via modem             *)
  156.   user_f_emerg     = $4000;     (* User is allowed on during emergencies     *)
  157.   user_f_pbbs      = $8000;     (* User is a personal BBS                    *)
  158.  
  159. TYPE
  160.     user_class_type =
  161.                      (user_c_nu,         (* New user                         *)
  162.                       user_c_uu,         (* Unregistered user                *)
  163.                       user_c_ou,         (* Old user                         *)
  164.                       user_c_eu,         (* Expert user                      *)
  165.                       user_c_bu,         (* BBS user                         *)
  166.                       user_c_rsu,        (* Remote sysop user                *)
  167.                       user_c_lsu);       (* Local sysop user                 *)
  168.  
  169.     user_record_type = RECORD
  170.                          user_i_ptr  : user_index_ptr;  (* Pointer to index  *)
  171.                          user_id     : call_sign_str;   (* Call sign of user *)
  172.                          user_ssid   : ssid_sign_str;   (* SSID of user      *)
  173.                          user_name   : STRING[20];      (* User's name       *)
  174.                          user_bbs    : bb_addr_str;     (* Mail address      *)
  175.                          user_zip    : STRING[10];      (* Zip code          *)
  176.                          user_port   : CHAR;            (* User's port       *)
  177.                          user_class  : user_class_type; (* User class        *)
  178.                          user_flag   : WORD;            (* User flags        *)
  179.                          user_fmt    : BYTE;            (* Format of "L"     *)
  180.                          max_pac     : WORD;            (* Maximum packet siz*)
  181.                          user_last   : LONGINT;         (* Last time on      *)
  182.                          user_l_time : LONGINT;         (* Last time "L" done*)
  183.                          user_l_cnt  : WORD;            (* Number of logons  *)
  184.                          user_n_time : LONGINT;         (* Last time "N" done*)
  185.                          user_pw     : password_str;    (* Password          *)
  186.                          user_sysop_p: BYTE;            (* SYSOP password #  *)
  187.                          user_lang   : CHAR;            (* User language     *)
  188.                          user_scr_len: BYTE;            (* Length of user's  *)
  189.                                                         (*      screen       *)
  190.                          user_scr_wid: BYTE;            (* Width of user's   *)
  191.                                                         (*      screen       *)
  192.                          user_access : access_block_type;(* User access  lvl *)
  193.                          padding     : ARRAY[1..4] OF BYTE;
  194.                        END;
  195.  
  196.  
  197. BBOPT.BB
  198. --------
  199.  
  200. This file contains the options information.  The first record is the
  201. main option block followed by the port blocks and then the file blocks.
  202. Each record is 4096 bytes long.  This file changes format a lot but
  203. the file control blocks have been fairly constant.
  204.  
  205. --- First block ---
  206.  
  207.         port_count         : BYTE;      (* Number of ports                   *)
  208.         fd_count           : BYTE;      (* Number of file directories        *)
  209.  
  210.         opt_type_bpt       : BOOLEAN;   (*  Limit types to B, P, and T       *)
  211.         opt_sysop_is_in    : BOOLEAN;   (* Sysop is accepting calls          *)
  212.         opt_sysop_bell     : BOOLEAN;   (* Sysop bell is on                  *)
  213.         opt_bid_for_p      : BOOLEAN;   (* Gen BID for P messages            *)
  214.         opt_bid_for_t      : BOOLEAN;   (* Gen BID for T messages            *)
  215.         opt_bid_for_blank  : BOOLEAN;   (* Gen BID for _ messages            *)
  216.         opt_blank_to_p     : BOOLEAN;   (* Translate "S" to "SP"             *)
  217.         opt_blank_to_b     : BOOLEAN;   (* Translate "S" to "SB"             *)
  218.         opt_hold_dupe_bid  : BOOLEAN;   (* Hold duplicate bids               *)
  219.         opt_kill_bbs_error : BOOLEAN;   (* Disconnect BBS on any error       *)
  220.         opt_direct_display : BOOLEAN;   (* Write direct to display           *)
  221.         opt_direct_snow    : BOOLEAN;   (* Avoid snow on CGA                 *)
  222.         opt_rename_k       : BOOLEAN;   (* Rename killed                     *)
  223.         opt_error          : BOOLEAN;   (* Log minor errors                  *)
  224.         opt_mono_tcb_trace : BOOLEAN;   (* Special monochrome TCB trace      *)
  225.         opt_trace          : BOOLEAN;   (* Run trace                         *)
  226.         opt_mon_time_stamp : BOOLEAN;   (* Time stamp monitor data           *)
  227.         opt_bbs_see_p      : BOOLEAN;   (* Allow BBS to see "P" messages     *)
  228.         opt_already_conn   : BOOLEAN;   (* Duplicate connect check           *)
  229.         opt_time_status    : BOOLEAN;   (* Update status line on time tick   *)
  230.         opt_own_in_bcst    : BOOLEAN;   (* Own call in BCST                  *)
  231.         opt_yapp_state     : BOOLEAN;   (* Show YAPP states                  *)
  232.         opt_show_binary    : BOOLEAN;   (* Show binary data during s/r       *)
  233.         opt_suppress_pfx   : BOOLEAN;   (* Don't show prefix on LO screen    *)
  234.         opt_show_mismatch  : BOOLEAN;   (* Show mismatch during forward scrpt*)
  235.         opt_auto_hlookup   : BOOLEAN;   (* Do HLOOKUP each forward cycle     *)
  236.         opt_extend_timeout : BOOLEAN;   (* Extend timeout on ports           *)
  237.         opt_personal_bbs   : BOOLEAN;   (* Personal BBS                      *)
  238.         opt_no_alt_header  : BOOLEAN;   (* Alternate header                  *)
  239.         opt_send_sid_alwys : BOOLEAN;   (* Always send SID                   *)
  240.         opt_fill_blank_bbs : BOOLEAN;   (* If @ BBS is blank fill from user  *)
  241.         opt_no_lang_prompt : BOOLEAN;   (* Language prompt control in registr*)
  242.         opt_no_full_review : BOOLEAN;   (* If on, bypass full screen review  *)
  243.         opt_blank_to_bbs   : BOOLEAN;   (* If on, set the default to bbs = ''*)
  244.         opt_autoset_to_bbs : BOOLEAN;   (* If on, set the default to bbs to  *)
  245.                                         (* that user's home BBS if any       *)
  246.  
  247.         operate_mode  : op_mode;        (* Operation mode                    *)
  248.         max_task_no   : BYTE;           (* Maximum number of tasks           *)
  249.         this_bb_sign  : call_sign_str;  (* Call sign of BBS                  *)
  250.         this_bb_bid   : call_sign_str;  (* Call sign of BBS for bid purposes *)
  251.         sysop_sign    : call_sign_str;  (* Call sign of SYSOP                *)
  252.         this_bb_addr  : bb_addr_str;    (* Address of BBS                    *)
  253.         this_bb_h     : h_addr_str;     (* Hieararchical addess of this BBS  *)
  254.         this_bb_name  : STRING[15];     (* SYSOP name                        *)
  255.         this_bb_loc   : STRING[25];     (* Location                          *)
  256.         user_file_name: PATHSTR;        (* USER control file                 *)
  257.         msg_file_name : PATHSTR;        (* MSG control file                  *)
  258.         msg_file_dir  : PATHSTR;        (* Directory for the msg files       *)
  259.         mess_fn       : PATHSTR;        (* File name for messages            *)
  260.         dos_mess_fn   : PATHSTR;        (* File name for DOS messages        *)
  261.         route_fn      : PATHSTR;        (* File name for route table         *)
  262.         path_fn       : PATHSTR;        (* File name for path table          *)
  263.         log_fn        : PATHSTR;        (* File name for log                 *)
  264.         help_fn       : PATHSTR;        (* File name for help                *)
  265.         doserr_fn     : PATHSTR;        (* File name for DOS error messages  *)
  266.         mon_fn        : PATHSTR;        (* File name for monitor log         *)
  267.         wakeup_fn     : PATHSTR;        (* File name for wakeup              *)
  268.         hlook_fn      : PATHSTR;        (* File name for hlookup             *)
  269.         passwd_fn     : PATHSTR;        (* File name for password file       *)
  270.         action_fn     : PATHSTR;        (* File name for action file         *)
  271.         temp_dir      : PATHSTR;        (* Directory for temp files          *)
  272.         n_mon         : WORD;           (* Number of mon items to keep       *)
  273.         bid_fn        : PATHSTR;        (* File name for bid table           *)
  274.         n_bid         : WORD;           (* Number of bid items to keep       *)
  275.         n_j_list      : BYTE;           (* Number of items on j list         *)
  276.         hold_dupe_hdr : BYTE;           (* Number of dup headers to hold     *)
  277.         trace_file_name : PATHSTR;      (* Trace output                      *)
  278.         z_time_fwd    : LONGINT;        (* Timezone correction -- FWD        *)
  279.         nofwd_kill    : STRING[26];     (* Dont kill on forward              *)
  280.         bcst_interval : BYTE;           (* Broadcast interval in minutes     *)
  281.         fwd_delay     : BYTE;           (* Forward delay                     *)
  282.         opt_types     : STRING[27];     (* Allowed types                     *)
  283.         emer_types    : STRING[27];     (* Emergency types                   *)
  284.         operator_color: BYTE;           (* Color of operator stuff           *)
  285.         status_color  : BYTE;           (* Color of staus line               *)
  286.         window_percent: BYTE;           (* Window split percentage           *)
  287.         scroll_mon    : WORD;           (* Monitor scroll                    *)
  288.         scroll_opr    : WORD;           (* Operator scroll                   *)
  289.         scroll_conn   : WORD;           (* Connect scroll                    *)
  290.         editor_free   : WORD;           (* Editor free size                  *)
  291.         bell_length1  : BYTE;           (* Tone length                       *)
  292.         bell_length2  : BYTE;           (* Warble length                     *)
  293.         newuser_l_time: BYTE;           (* How many days to show a new user  *)
  294.         wakeup_intervl: BYTE;           (* Wakeup interval                   *)
  295.         bpq_appl_num  : BYTE;           (* BPQ application number            *)
  296.         bpq_buff      : WORD;           (* BPQ buffer size                   *)
  297.         yapp_time_exp : BYTE;           (* YAPP time expansion               *)
  298.         max_l_shown   : BYTE;           (* Max messages given by "L" command *)
  299.         fwd_pass_max  : BYTE;           (* Maximum passes for forward        *)
  300.  
  301.         wp_bb_sign    : bb_full_addr;   (* Call sign of WP system to send to *)
  302.         home_expires  : LONGINT;        (* When Home BBS expires             *)
  303.         b_fwd_stop    : LONGINT;        (* Don't forward bulletins after     *)
  304.                                         (* this time period                  *)
  305.         dflt_b_expire : LONGINT;        (* Default bulletin expiration date  *)
  306.         language_list : lang_str;       (* List of allowed languages         *)
  307.  
  308.         parm_file_ver : BYTE;           (* Version number of parm file       *)
  309.  
  310.  
  311. --- Port block ---
  312.  
  313.     port_type_type  = (port_dedhost1,    (* DED host mode -- TNC1            *)
  314.                        port_dedhost2,    (* DED host mode -- TNC2            *)
  315.                        port_dedhost87,   (* DED host mode -- PK-87           *)
  316.                        port_bpqhost,     (* DED host mode -- BPQ switch      *)
  317.                        port_pcpa,        (* DRSI PC*PA                       *)
  318.                        port_aeapk232,    (* AEA PK-232 mode                  *)
  319.                        port_g8bpq,       (* G8BPQ switch                     *)
  320.                        port_pc1xx,       (* Paccom PC-1xx                    *)
  321.                        port_kan,         (* Kantronics host mode             *)
  322.                        port_kam_a,       (* Kantronics host mode (KAM in     *)
  323.                                          (*    AMTOR)                        *)
  324.                        port_kande,       (* Kantronics Data Engine host mode *)
  325.                        port_modem,       (* Modem with AT command set        *)
  326.                        port_clover_hal,  (* PCI-4000 Clover card             *)
  327.                        port_null_modem,  (* Cross connect to another system  *)
  328.                        port_serial,      (* Dumb serial port                 *)
  329.                        port_console,     (* Local terminal                   *)
  330.                        port_unknown);    (* Not set                          *)
  331.  
  332.     port_block_type = RECORD
  333.                         next_port   : port_block_ptr;   (* -> next block     *)
  334.                         main_port   : port_block_ptr;   (* -> main port      *)
  335.                         rel_port    : port_block_ptr;   (* -> related port   *)
  336.                         aux_thread  : tcb_ptr;          (* Monitor thread    *)
  337.                         com_number  : BYTE;             (* COMx number       *)
  338.                         port_char   : CHAR;             (* Character for port*)
  339.                         port_name   : STRING[20];       (* Name of port      *)
  340.                         port_type   : port_type_type;   (* Port type         *)
  341.  
  342.                         port_host_only      : BOOLEAN;  (* Host mode only tnc*)
  343.                         port_sub_port       : BOOLEAN;  (* Sub port (PC*PA)  *)
  344.                         port_monitor        : BOOLEAN;  (* Monitor this port?*)
  345.                         port_r_sysop        : BOOLEAN;  (* Remote sysop ok   *)
  346.                         port_up_down        : BOOLEAN;  (* Upload/Download ok*)
  347.                         port_bcst           : BOOLEAN;  (* Bcst on this port *)
  348.                         port_pk232_data_ack : BOOLEAN;  (* PK232 dat ack wait*)
  349.                         port_no_out_fwd     : BOOLEAN;  (* No outgoing fwd   *)
  350.                         port_no_busy_fwd    : BOOLEAN;  (* No outgoing fwd   *)
  351.                                                         (* when busy         *)
  352.                         port_no_binary      : BOOLEAN;  (* No binary allowed *)
  353.                         port_suppress_ssid  : BOOLEAN;  (* Suppress SSID addr*)
  354.                         port_use_user_chan  : BOOLEAN;  (* User user channel *)
  355.                                                         (* for forwarding    *)
  356.                         port_force_register : BOOLEAN;  (* Force registration*)
  357.                         port_bpq_port_detect: BOOLEAN;  (* Detect BPQ port   *)
  358.                         port_dflt_trans     : BOOLEAN;  (* Default transpart *)
  359.  
  360.                         port_operate_mode : op_mode;    (* Operation mode    *)
  361.                         port_num          : CHAR;       (* Port # for subport*)
  362.                         port_color        : BYTE;       (* Display color     *)
  363.                         port_sema         : BYTE;       (* Semaphore number  *)
  364.                         port_no_mail_bcst : BYTE;       (* Bdcst with no mail*)
  365.                         port_no_mail_cnt  : BYTE;       (* Count of no mail  *)
  366.                         port_allow    : user_class_type; (* Allow this class *)
  367.                         port_restrict : user_class_type; (* Restrict class   *)
  368.                         dflt_pac    : WORD;             (* Default packet siz*)
  369.                         max_pac     : WORD;             (* Max packet size   *)
  370.                         data_rate   : WORD;             (* Data rate to use  *)
  371.                         time_out    : WORD;             (* Time out in second*)
  372.                         fwd_min     : WORD;             (* Forward minute    *)
  373.                         sked_fwd    : LONGINT;          (* Next time to fwd  *)
  374.                         max_conn    : BYTE;             (* Num of connects   *)
  375.                         max_chan    : BYTE;             (* Max capacity TNC  *)
  376.                         port_pend   : BYTE;             (* Maximum port pend *)
  377.                         dflt_scrl   : BYTE;             (* Default screen len*)
  378.                         new_display : BYTE;             (* New user disp fmt *)
  379.                         reject_act  : BYTE;             (* Reject action     *)
  380.                         reject_bul  : BYTE;             (* Reject bultns act *)
  381.                         mon_filter  : BYTE;             (* Monitor filter    *)
  382.                         u_restrict  : BYTE;             (* User restrictions *)
  383.                         bpq_appl    : BYTE;             (* BPQ appl number   *)
  384.                         disc_delay  : BYTE;             (* Disconnect delay  *)
  385.                         option_byte : BYTE;             (* Options byte      *)
  386.                         dflt_lang   : CHAR;             (* Default language  *)
  387.                         dflt_access : access_block_type;(* Default access    *)
  388.                         first_load  : PATHSTR;          (* File to load      *)
  389.                         dflt_order  : STRING[3];        (* Default fwd order *)
  390.                         connected   : port_connect_ptr; (* List of connects  *)
  391.                         call_list   : port_call_ptr;    (* list of calls hrd *)
  392.                         port_ext    : port_ext_block_ptr; (* Port extension  *)
  393.                         CASE BYTE OF
  394.  
  395.                           0 :                           (* All ports but modm*)
  396.                               (call_set  : STRING[9];   (* Set this call     *)
  397.                                bcst_path : STRING[45]); (* Bcst this path    *)
  398.  
  399.                           1:                            (* Modem ports       *)
  400.                               (modem_optns : BYTE;      (* Signify modem opt *)
  401.                                answer_ring : BYTE;      (* Answer on this rin*)
  402.                                cr_timeout  : BYTE;      (* CR time out       *)
  403.                                cur_rate    : WORD;      (* Current data rate *)
  404.                                modem_echo  : BOOLEAN;   (* Echo on modem     *)
  405.                                modem_e_now : BOOLEAN;   (* Echo on modem NOW *)
  406.                                modem_crlf  : BOOLEAN;   (* CR=CR/LF for modem*)
  407.                                modem_dial  : BOOLEAN;   (* Modem dialing     *)
  408.                                modem_conn  : BOOLEAN;   (* Modem connect msg *)
  409.                                modem_freez : BOOLEAN;   (* Freeze modem speed*)
  410.                                modem_iflow : BOOLEAN;   (* Improved flow     *)
  411.                                modem_reg   : BYTE;      (* Allow register    *)
  412.                                port_modem_dcd : BOOLEAN; (* DCD on modem     *)
  413.                                modem_cwait : BOOLEAN;   (* Wait for CONN     *)
  414.                                modem_econn : BOOLEAN;   (* Extended connect  *)
  415.                                modem_thre  : BOOLEAN);  (* Empty xmit buffer *)
  416.  
  417. --- File block ---
  418.  
  419.   TYPE
  420.     fsb_name_str          = STRING[10];
  421.  
  422.     fsb_ptr               = ^file_subsys_block;
  423.  
  424.     file_subsys_block     = RECORD
  425.                               next_fsb        : fsb_ptr;
  426.                               fsb_name        : fsb_name_str;
  427.                               fsb_alias       : STRING[60];
  428.                               fsb_desc        : STRING[60];
  429.                               fsb_path        : file_name_str;
  430.                               fsb_f_subdir_ok : BOOLEAN;
  431.                               fsb_binary      : BOOLEAN;
  432.                               fsb_up          : user_class_type;
  433.                               fsb_down        : user_class_type;
  434.                             END;
  435.  
  436.  
  437. ----
  438.  
  439. This is the access control block as used by the user and port records
  440.  
  441. TYPE
  442.   access_block_type  = RECORD
  443.                          access_flags : BYTE;
  444.                        END;
  445.  
  446. (*---------------------------------------------------------------------------*)
  447. (* Access flags                                                              *)
  448. (*---------------------------------------------------------------------------*)
  449.  
  450. CONST
  451.  
  452.   access_f_sysop     = $80;    (* User authentication as remote sysop requird*)
  453.   access_f_bbs       = $40;    (* User authentication as BBS required        *)
  454.   access_f_user      = $20;    (* User authentication required               *)
  455.   access_f_user_send = $10;    (* User authentication required for send      *)
  456.  
  457.   access_letter_group : str4
  458.                      = 'RBAS'; (* Letters representing each flag in order    *)
  459.  
  460.  
  461. ----
  462.  
  463. This is the operate mode block as used by the option and port blocks
  464.  
  465.   op_mode = RECORD
  466.                mode_fwd_emer    :BOOLEAN;  (* Forward emergency traffic only *)
  467.                mode_fwd_nonts   :BOOLEAN;  (* Don't forward NTS              *)
  468.                mode_acc_emer    :BOOLEAN;  (* Accept emergency traffic only  *)
  469.                mode_acc_nonts   :BOOLEAN;  (* Don't accept nts               *)
  470.                mode_e_users     :BOOLEAN;  (* E mode users only              *)
  471.                mode_user_change :BOOLEAN;  (* Allow user to change call      *)
  472.                mode_stop_connect:BOOLEAN;  (* Don't allow connects           *)
  473.                mode_stop_fwd    :BOOLEAN;  (* Don't allow forward            *)
  474.                mode_no_timeout  :BOOLEAN;  (* Skip time outs on receive      *)
  475.             END;
  476.